home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 January / Gamestar_69_2005-01_dvd.iso / Dema / mortyr2_demo.exe / {app} / effects / bump.fx < prev    next >
Encoding:
Text File  |  2004-09-08  |  4.7 KB  |  257 lines

  1. matrix mWld;    // World
  2. matrix mTot;    // Total
  3.  
  4. texture tDif;   // teksturka glowna
  5. texture tDf3;   // Normal map
  6.  
  7. vector vCPS;    // pozycja kamery (w swiecie)
  8. vector lhtR;    // kierunek swiatla (w swiecie)
  9. vector lPos;    // pozycja swiatla w meshu (tu nie uzywam, tylko dla zgodnosci)
  10. vector lCol;    // kolor swiatla odbicia (dla dot3s)
  11.  
  12.  
  13. technique tec0
  14. {
  15.  pass p0
  16.  {
  17.   ZBias=0;
  18.   CullMode=ccw;
  19.  
  20.   Texture[0] = <tDif>;
  21.  
  22.   ColorOp[0] = Modulate;
  23.         
  24.   ColorArg1[0] = Diffuse;
  25.   ColorArg2[0] = Texture;
  26.  
  27.   AlphaOp[0]=Disable;
  28.  
  29.   ColorOp[1]=Disable;
  30.   AlphaOp[1]=Disable;
  31.  
  32.   PixelShader  = NULL;
  33.   VertexShader = XYZ | Normal | Tex3;
  34.  }
  35.  
  36.  
  37.  
  38.  
  39. //
  40. // sciemnic
  41. //
  42.  
  43.  
  44.  pass p1
  45.  {
  46.   AlphaBlendEnable = true;
  47.   SrcBlend = Zero;
  48.   DestBlend = SrcColor;
  49.   BlendOp=Add;
  50.   ZBias=1;
  51.  
  52.   VertexShaderConstant[0] = <mWld>; //World Matrix
  53.   VertexShaderConstant[4] = <mTot>; //World*View*Proj Matrix
  54.   VertexShaderConstant[11] = (0.0f, 0.0f, 0.0f, 0.0f);    // zero
  55.   VertexShaderConstant[12] = (1.0f, 1.0f, 1.0f, 1.0f);    // jeden
  56.   vertexShaderConstant[15] = (940.0f, 940.0f, 940.0f, 940.0f);
  57.   VertexShaderConstant[16] = <lhtR>;    //Light Position
  58.   vertexShaderConstant[19] = (1024.0f, 1024.0f, 1024.0f, 1024.0f);
  59.   vertexShaderConstant[20] = (.5f,.5f,.5f,.5f);
  60.   VertexShaderConstant[23] = <lPos>;
  61.   VertexShaderConstant[24] = <vCPS>;
  62.  
  63.   Texture[0]   = <tDif>;
  64.   Texture[1]   = <tDf3>;
  65.  
  66.   VertexShader = 
  67.   decl
  68.   {
  69.    stream 0;
  70.    float v0[3]; //Position
  71.    float v3[3]; //Normal
  72.    float v7[2]; //Texture Coord1
  73.    float v8[2]; //Tangent
  74.    float v9[2]; //Tangent
  75.   }
  76.   asm
  77.   {
  78.    vs.1.1
  79.    //pozycja na ekranie
  80.    m4x4 oPos,v0,c4
  81.    m4x4 r0,v0,c0      // Transform point to world space
  82.  
  83.    // chce odleglosc od kamery
  84.    add r5, -r0, c24
  85.    dp3 r10.x, r5.xyz, r5.xyz // kwadrat odleglosci
  86.  
  87.    // odwrotnosc
  88.    rsq r10.x, r10.x
  89.    mul r10.x, r10.x, c15.x
  90.  
  91.    // puszczam dalej
  92.    m3x3 r3,v8,c0 // chce normal
  93.    m3x3 r5,v3,c0 // chce tangent
  94.  
  95.    //gen binormal via Cross product
  96.    mul r0,-r3.zxyw,r5.yzxw;
  97.    mad r4,-r3.yzxw,r5.zxyw,-r0;
  98.  
  99.    //wektor swiatla dla bumpa
  100.    dp3 r6.x,r3,-c16
  101.    dp3 r6.y,r4,-c16
  102.    dp3 r6.z,r5,-c16
  103.  
  104.    // wynik do oD1
  105.    mad oD0.xyz,r6.xyz,c20,c20
  106.    mov oD1.x, r10.x
  107.    mov oD1.y, r10.x
  108.    mov oD1.z, r10.x
  109.    mov oD1.w, r10.x
  110.  
  111.    //wspolrzedne teksrur
  112.    mov oT0, v7
  113.    mov oT1, v7
  114.   };    
  115.     
  116.   PixelShader = 
  117.   asm
  118.   {
  119.    ps.1.1
  120.    tex t0 // teksrurka glowna
  121.    tex t1 // normal
  122.  
  123.    dp3 r0, t1, v0
  124.    mov r1, v1
  125.    add r0, r0, 1-r1
  126.   };     
  127.  }
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134. //
  135. // rozjasnic
  136. //
  137.  
  138.  
  139.  pass p2
  140.  {
  141.   AlphaBlendEnable = true;
  142.   SrcBlend = DestColor;
  143.   DestBlend = One;
  144.   BlendOp=Add;
  145.   ZBias=2;
  146.  
  147.   VertexShaderConstant[0] = <mWld>; //World Matrix
  148.   VertexShaderConstant[4] = <mTot>; //World*View*Proj Matrix
  149.   VertexShaderConstant[11] = (0.0f, 0.0f, 0.0f, 0.0f);    // zero
  150.   VertexShaderConstant[12] = (1.0f, 1.0f, 1.0f, 1.0f);    // jeden
  151.   vertexShaderConstant[15] = (940.0f, 940.0f, 940.0f, 940.0f);
  152.   VertexShaderConstant[16] = <lhtR>;    //Light Position
  153.   vertexShaderConstant[19] = (1024.0f, 1024.0f, 1024.0f, 1024.0f);
  154.   vertexShaderConstant[20] = (.5f,.5f,.5f,.5f);
  155.   VertexShaderConstant[23] = <lPos>;
  156.   VertexShaderConstant[24] = <vCPS>;
  157.  
  158.   Texture[0]   = <tDif>;
  159.   Texture[1]   = <tDf3>;
  160.  
  161.   VertexShader = 
  162.   decl
  163.   {
  164.    stream 0;
  165.    float v0[3]; //Position
  166.    float v3[3]; //Normal
  167.    float v7[2]; //Texture Coord1
  168.    float v8[2]; //Tangent
  169.    float v9[2]; //Tangent
  170.   }
  171.   asm
  172.   {
  173.    vs.1.1
  174.    //pozycja na ekranie
  175.    m4x4 oPos,v0,c4
  176.    m4x4 r0,v0,c0      // do swiata
  177.  
  178.    // chce odleglosc od kamery
  179.    add r5, -r0, c24
  180.    dp3 r10.x, r5.xyz, r5.xyz // kwadrat odleglosci
  181.  
  182.    // odwrotnosc
  183.    rsq r10.x, r10.x
  184.    mul r10.x, r10.x, c15.x
  185.  
  186.    // puszczam dalej
  187.    m3x3 r3,v8,c0 // chce normal
  188.    m3x3 r5,v3,c0 // chce tangent
  189.  
  190.    //gen binormal via Cross product
  191.    mul r0,-r3.zxyw,r5.yzxw;
  192.    mad r4,-r3.yzxw,r5.zxyw,-r0;
  193.  
  194.    //wektor swiatla dla bumpa
  195.    dp3 r6.x,r3,-c16
  196.    dp3 r6.y,r4,-c16
  197.    dp3 r6.z,r5,-c16
  198.  
  199.    // wynik do oD1
  200.    mad oD0.xyz,r6.xyz,c20,c20
  201.    mov oD1.x, r10.x
  202.    mov oD1.y, r10.x
  203.    mov oD1.z, r10.x
  204.    mov oD1.w, r10.x
  205.  
  206.    //wspolrzedne teksrur
  207.    mov oT0, v7
  208.    mov oT1, v7
  209.   };    
  210.     
  211.   PixelShader = 
  212.   asm
  213.   {
  214.    ps.1.1
  215.    tex t0 // teksrurka glowna
  216.    tex t1 // normal
  217.  
  218.    dp3 r0, t1_bx2, v0_bx2
  219.    mov r1, v1
  220.    sub r0, r0, 1-r1
  221.   };     
  222.  }
  223.  
  224.  
  225.  
  226.  
  227.  
  228. }
  229.  
  230.  
  231.  
  232.  
  233.  
  234. technique tec1
  235.  pass p0
  236.  {
  237.   ZBias=1;
  238.  
  239.   Texture[0] = <tDif>;
  240.  
  241.   ColorOp[0] = Modulate;
  242.         
  243.   ColorArg1[0] = Diffuse;
  244.   ColorArg2[0] = Texture;
  245.  
  246.   AlphaOp[0]=Disable;
  247.  
  248.   ColorOp[1]=Disable;
  249.   AlphaOp[1]=Disable;
  250.  
  251.   PixelShader  = NULL;
  252.   VertexShader = XYZ | Normal | Tex3;
  253.  }
  254.  
  255. }
  256.